/**
 * 示例如何渲染网页
 *
 * @author guojunlong@tuniu.com (Allen Guo)
 * @copyright Copyright &copy; 2006-2016 Tuniu.com
 */
'use strict';

module.exports = class {
    noArgs() {
        let page = this.res.getPage();
        page.render();

        // 等价下面的代码.
        // this.res.xRender();
    }

    withArgs() {
        let page = this.res.getPage();
        page.render({
            content: '默认布局、传递页面数据、默认模板文件',
        });

        // 等价下面的代码.
        // this.res.xRender({
        //     content: '默认布局、传递数据、默认模板文件'
        // });

        // 也等价下面的代码.
        // let page = this.res.getPage();
        // page.setBody({
        //     content: '默认布局、传递页面数据、默认模板文件'
        // });
        // page.render();
    }

    blockArgs() {
        let page = this.res.getPage();
        page.addBlock('top', {
            tkd: {
                title: '页面标题被更换了'
            }
        });
        page.addBlock('header', {
            from: 'tours'
        });
        page.addBlock('footer', {
            from: 'tours'
        });
        page.render();
    }

    anotherLayout() {
        let page = this.res.getPage();
        page.setLayout('another');
        page.addBlock('header', {
            title: 'ANOTHER HEADER'
        });
        page.addBlock('footer', {
            title: 'ANOTHER FOOTER'
        });
        page.render({
            content: '布局文件定制.'
        });
    }

    anotherView() {
        let page = this.res.getPage();
        page.setBody({
            content: '模板文件路径定制'
        }, 'kickstart/page/anotherView');
        page.render();
    }

    swapArgs() {
        this.res.xRender("kickstart/page/swapArgs", {
            content: 'xRender方法参数位置可以调换（模板文件，页面数据）.'
        });
    }

    /**
     *  示例异步获取数据回调渲染.
     */
    async(keyword) {
        require('request').get({
            url: 'http://sugg.us.search.yahoo.net/gossip-gl-location/?appid=weather&output=xml&command=%E5%8D%97%E4%BA%AC'
        }, (err, res, data) => {
            console.error('data:::::', data);
            this.res.setHeader("Content-Type", "application/xml");
            this.res.htmlRender({
                content: data
            }, false);
        });
    }
}